package com.zzs.common.core.validation;

import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import jakarta.validation.ConstraintValidator;
import jakarta.validation.ConstraintValidatorContext;

import java.util.Set;

/**
 * 自定义校验器，用于验证一个 JSON 数组字符串，每个元素必须是一个包含 "input" 和 "output" 两个键的 JSON 对象。
 * @date 2025/03/17
 * @author zzs
 */
public class JsonArrayValidator implements ConstraintValidator<ValidJsonArray, String> {
    @Override
    public boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) {
        if (s == null || s.isEmpty()) {
            return true;
        }
        try {
            JSONArray jsonArray = JSON.parseArray(s);
            for (Object obj : jsonArray) {
                if (obj instanceof JSONObject jsonObject) {
                    Set<String> keySet = jsonObject.keySet();
                    if (keySet.size() != 2 || !keySet.contains("input") || !keySet.contains("output")) {
                        return false;
                    }
                } else {
                    return false;
                }
            }
            return true;
        } catch (Exception e) {
            return false;
        }
    }
}
